import http from '@/plugins/axios';
import {encryptData} from '@/utils/RAS.ts';


/**
 * 获取用户信息列表
 */
export function fetchUserList(data): Promise<BaseApi.Page<User.BaseInfo[]>> {
  return new Promise((resolve, reject) => {
    // 发起 HTTP 请求
    http<BaseApi.Page<User.BaseInfo[]>>({
      url: '/system/user/getPage',
      method: 'get',
      params: data
    })
      .then(response => {
        // 请求成功时，返回数据
        resolve(response.data);
      })
      .catch(error => {
        // 请求失败时，捕获并抛出错误
        console.error('Failed to fetch user info:', error);
        reject(error);
      });
  });
}

//修改用户
export function fetchUserUpdate(data): Promise<BaseApi.Data<any>> {
  return new Promise((resolve, reject) => {
    // 发起 HTTP 请求
    http<BaseApi.Data<any>>({
      url: '/system/user/updateById',
      method: 'put',
      data
    })
      .then(response => {
        // 请求成功时，返回数据
        resolve(response.data);
      })
      .catch(error => {
        // 请求失败时，捕获并抛出错误
        console.error('Failed to fetch user info:', error);
        reject(error);
      });
  });
}

//保存用户
export function fetchUserSave(data): Promise<BaseApi.Data<any>> {
  return new Promise((resolve, reject) => {
    // 发起 HTTP 请求
    http<BaseApi.Data<any>>({
      url: '/system/user/save',
      method: 'post',
      data
    })
      .then(response => {
        // 请求成功时，返回数据
        resolve(response.data);
      })
      .catch(error => {
        // 请求失败时，捕获并抛出错误
        console.error('Failed to fetch user info:', error);
        reject(error);
      });
  });
}

//修改密码
export function fetchUpdatePassWord(data): Promise<BaseApi.Data<any>> {
  // 加密密码
  const newPassword = encryptData(data.password);
  return new Promise((resolve, reject) => {
    // 发起 HTTP 请求
    http<BaseApi.Data<any>>({
      url: '/system/user/updatePassword',
      method: 'put',
      data: {
        userId: data.userId,
        password: newPassword
      }
    })
      .then(response => {
        // 请求成功时，返回数据
        resolve(response.data);
      })
      .catch(error => {
        // 请求失败时，捕获并抛出错误
        console.error('Failed to fetch user info:', error);
        reject(error);
      });
  });
}

/**
 * 获取用户信息
 * @param userId 用户ID
 */
export function fetchUserDetails(userId?: null | string | number): Promise<User.UserDetails> {
  let url;
  if (userId) {
    url = `/system/user/getUserInfo/${userId}`
  } else {
    url = '/system/user/getUserInfo'

  }
  return new Promise((resolve, reject) => {
    // 发起 HTTP 请求
    http<User.UserDetails>({
      url: url,
      method: 'get',
    })
      .then(response => {
        // 请求成功时，返回数据
        resolve(response.data);
      })
      .catch(error => {
        // 请求失败时，捕获并抛出错误
        console.error('Failed to fetch user info:', error);
        reject(error);
      });
  });
}

//绑定角色
export function fetchUserBindRole(data): Promise<any> {

  return new Promise((resolve, reject) => {
    // 发起 HTTP 请求
    http<any>({
      url: '/system/user/bindRole',
      method: 'post',
      data
    })
      .then(response => {
        // 请求成功时，返回数据
        resolve(response.data);
      })
      .catch(error => {
        // 请求失败时，捕获并抛出错误
        console.error('Failed to fetch user info:', error);
        reject(error);
      });
  });
}
